package com.hua.controller;

import com.hua.entity.bianbo;
import com.hua.entity.midu;
import com.hua.entity.muban;
import com.hua.entity.tufangkaiwa;
import com.hua.utils.Result;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/mes")
public class MesJob {

    @ApiOperation(value = "土方直立壁开挖深度计算")
    @PostMapping("tufang")
    public Result tufang(@RequestBody tufangkaiwa tufangkaiwa){
        double c = tufangkaiwa.getC().doubleValue();
        double j = tufangkaiwa.getJ().doubleValue();
        double q = tufangkaiwa.getQ().doubleValue();
        double r = tufangkaiwa.getR().doubleValue();
        double k =  1.25;
        double ang = ((45-j/2) * Math.PI) / 180;
        double h =  2*c/(k*r*StrictMath.tan(ang))-q/r;
        //转换两位小数
        tufangkaiwa.setH(h);
        System.out.println("本工程的基坑土方立直壁最大开挖高度为"+tufangkaiwa.getH());
        return Result.ok(tufangkaiwa).message("计算成功");
    }

    @ApiOperation(value = "挖方安全边坡计算")
    @PostMapping("bianbo")
    public Result bianbo(@RequestBody bianbo bianbo){
        double c = bianbo.getC().doubleValue();
        double j = bianbo.getJ().doubleValue();
        double q = bianbo.getQ().doubleValue();
        double r = bianbo.getR().doubleValue();

        //sin45度
        Double s=Math.sin(Math.toRadians(q));
        Double s1=Math.cos(Math.toRadians(j));
        Double h=2*c*s*s1;
        Double x1 =Math.sin(Math.toRadians((q-j)/2));
        Double x2 =r*(Math.pow(x1,2));
        Double hx =h/x2;
        bianbo.setH(hx);
        return Result.ok(bianbo).message("计算成功");
    }

    //混凝土对模板的侧向压力
    @ApiOperation(value = "混凝土对模板的侧向压力")
    @PostMapping("muban")
    public Result muban(@RequestBody muban muban){
        double r = muban.getR().doubleValue();
        double t = muban.getT().doubleValue();
        double b1 = muban.getB1().doubleValue();
        double b2 = muban.getB2().doubleValue();
        double v = muban.getV().doubleValue();
        double h = muban.getH().doubleValue();
        Double G =Math.min(0.22*r*t*b1*b2*Math.pow(v,0.5),r*h);
        muban.setG(G);
        System.out.println(G);
        return Result.ok(muban).message("计算成功");
    }

    @ApiOperation("土的密度")
    @PostMapping("midu")
    public Result midu(@RequestBody midu midu){
        double ms = midu.getMs().doubleValue();
        double mw = midu.getMw().doubleValue();
        double vs = midu.getVs().doubleValue();
        double vw = midu.getVw().doubleValue();
        double va = midu.getVa().doubleValue();
        double pw = midu.getPw().doubleValue();
        double vv = midu.getVv().doubleValue();
        Double ps =(ms+mw)/(vs+vw+va);
        midu.setPs(ps);
        Double g = ps/pw;
        midu.setG(g);
        Double w =(mw*0.01)/ms;
        midu.setW(w);
        Double e =vw/vs;
        midu.setE(e);
        Double V=vv+vs+va+vw;
        Double n=vv/V;
        midu.setN(n);
        Double s=vw/vv;
        midu.setS(s);
        Double psat =(ms+vv*pw)/V;
        midu.setPsat(psat);
        Double pd =ms/V;
        midu.setPd(pd);
        return Result.ok(midu).message("计算成功");
    }
}
